---
--类名: TaskTrackModel.lua
--创建日期: 2016-2-23
--创建人: 陈小虎
--功能描述: 任务追踪数据模型
--修改内容:
--修改日期:   
--修改人:      
--修改备注: 
--
local TaskTrackModel = class("TaskTrackModel")

function TaskTrackModel:ctor()
	self:refreshTasks()
end

function TaskTrackModel:refreshTasks()
	self._mainTasks = {}
	self._tasks = {}
	self._sortTasks = {}

	self._haveCircle = false

	local tasks = UD:getCurTakenMainTasks()
	if tasks then
		for _,task in pairs(tasks) do
			self:addTask(task,true)
		end
	end

	--支线任务
	local branchTasks = UD:getTakenBranchTasks()
	local branchTrackTasks = {}
	for _, task in ipairs(branchTasks) do
		if TaskManager:isNeedTrack(task:getId()) then
			table.insert(branchTrackTasks, task)
		end
	end
	table.sort(branchTrackTasks, function(a, b)
		return a.acceptStamp < b.acceptStamp
	end)
	for _, task in ipairs(branchTrackTasks) do
		self:addTask(task)
	end

	-- 赏金任务
	local bountyTasks = UD:getCurTakenBountyTasks()
	if bountyTasks then
		for _,task in pairs(bountyTasks) do
			if TaskManager:isNeedTrack(task:getId()) then
				self:addTask(task)
			end
		end
	end
end

function TaskTrackModel:addTask(task,isMain)
	if not task then return end
	local taskConfig = task.conf
	if taskConfig and taskConfig.ID then
		local trackShow = taskConfig.trackShow
		if trackShow == nil or tonumber(trackShow) == 0 then
			if isMain then
				table.insert(self._mainTasks,task)
			else
				table.insert(self._tasks,task)
			end
		end
	end
end

function TaskTrackModel:getTasks()
	return self._tasks
end

function TaskTrackModel:isTaskExsit(taskId)
	for i,v in ipairs(self._tasks) do
		if tonumber(v:getId()) == tonumber(taskId) then
			return true
		end
	end
	return nil
end

function TaskTrackModel:isHaveCircleTask()
	return self._haveCircle
end

function TaskTrackModel:getMainTask()
	-- 主线任务有且只有一个，潜规则
	-- 长度为1的数组
	return self._mainTasks[1]
end

function TaskTrackModel:isMainTask(taskId)
	local task = UD:getTaskById(taskId)
	if task and task:isMain() then
		return true
	end
	return false
end

return TaskTrackModel
